var jump = function(nums) {
  const len = nums.length;
  let ans = 0, cover = 0, nextCover = 0;

  for (let i = 0; i < len - 1; i++) {
    // 更新当前可以跳到的最远位置
    nextCover = Math.max(nextCover, i + nums[i]);

    // 如果当前索引到达了当前覆盖范围的最远位置，则需要跳跃
    if (i === cover) {
      ans++;
      cover = nextCover;

      // 如果已经可以覆盖到最后一个位置，直接返回结果
      if (cover >= len - 1) {
        return ans;
      }
    }
  }

  return ans;
};

const nums = [2,3,0,1,4];
console.log(jump(nums))